package cn.stylefeng.guns.modular.storage.service;

import cn.hutool.core.collection.ListUtil;
import cn.stylefeng.guns.modular.hx.dps.entity.DpsZcServer;
import cn.stylefeng.guns.modular.hx.dps.service.DpsZcServerService;
import cn.stylefeng.guns.modular.hx.storage.model.params.HxStorageStockParam;
import cn.stylefeng.guns.modular.hx.storage.service.HxStorageOffShelfService;
import cn.stylefeng.guns.modular.hx.storage.service.HxStorageOutService;
import cn.stylefeng.guns.modular.hx.storage.service.HxStorageStockService;
import cn.stylefeng.guns.modular.order.service.JSTOutOrderScheduledService;
import cn.stylefeng.guns.modular.order.service.JSTPutOrderScheduledService;
import cn.stylefeng.roses.core.reqres.response.ResponseData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;

import cn.stylefeng.guns.core.util.DateUtil;
import cn.stylefeng.guns.modular.hx.basic.service.HxBasicGoodsService;
import cn.stylefeng.guns.modular.hx.basic.service.HxBasicPositionGoodsService;
import cn.stylefeng.guns.modular.order.service.OrderTransportService;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Configuration
@EnableScheduling
public class TaskJob {

    @Autowired
    private StorageStockService storageStockService;

    @Autowired
    private HxStorageOffShelfService hxStorageOffShelfService;

    @Autowired
    private OrderTransportService orderTransportService;

    @Autowired
    private HxBasicPositionGoodsService hxBasicPositionGoodsService;

    @Autowired
    private HxBasicGoodsService hxBasicGoodsService;

    @Autowired
    private JSTOutOrderScheduledService jstOutOrderScheduledService;

    @Autowired
    private JSTPutOrderScheduledService jstPutOrderScheduledService;

    @Autowired
    private HxStorageOutService hxStorageOutService;

    @Autowired
    private HxStorageStockService hxStorageStockService;



    @Autowired
    private DpsZcServerService dpsZcServerService;

    /**
     * 停用
     * 00:00执行一次
     */
//	@Scheduled(cron = "0 0 0 * * ?")
//	public void job1() {
//		storageStockService.taskJob();//创建期间库容统计
//	}

    /**
     * 停用
     * 00:10执行一次
     */
//	@Scheduled(cron = "0 10 0 * * ?")
//	public void job2() {
////		hxBasicPositionGoodsService.empty();//清空没有库存的绑定关系
//	}

    /**
     * 停用
     * 00:20执行一次
     */
//	@Scheduled(cron = "0 20 0 * * ?")
//	public void job3() {
////		orderTransportService.updateOauth2TokenXlb();//更新新零帮oauth2-Token
//	}

    /**
     * 停用
     * 00:30执行一次
     */
//	@Scheduled(cron = "0 30 0 * * ?")
//	public void job4() {
////		hxBasicGoodsService.taskAppointment2();//更新商品拆零，换算率，保质期，商品名称，商品编码，商品规格
//	}

    /**
     * 停用
     * 02:00执行一次
     */
//	@Scheduled(cron = "0 0 2 * * ?")
//	public void job5() {
////		orderTransportService.updateOauth2TokenXlb();//更新新零帮oauth2-Token
//	}

    /**
     * 停用
     * 08:00执行一次
     */
//	@Scheduled(cron = "0 0 8 * * ?")
//	public void job6() {
//		//天津好想来仓库 超过2/1保质期的自动生成强制下架任务
////		hxStorageOffShelfService.offShelfTaskJob(46L);
////		hxStorageOffShelfService.offShelfTaskJob(64L);
//	}

    /** 停用
     *
     * 2分钟执行一次
     */
//	@Scheduled(cron = "0 0/2 * * * ?")
//	public void job7() {
////		orderTransportService.taskJobJh();//查询新零帮拣货任务
//	}


//
//     停用
//    @Scheduled(cron = "0 10 0 * * ?")
//    public void job2() {
//		hxBasicPositionGoodsService.removeEmpty(ListUtil.of(123L));//清空没有库存的绑定关系
//    }


//	/**
//	 * 低于安全库存值的需要生产下架任务
//	 * 135秒执行一次
//	 */
//	@Scheduled(cron = "15 0/4 * * * ?")
//	public void job8() {
////		hxStorageOffShelfService.safetyStockGenOffShelfTaskJob(46L);//低于安全库存值的需要生产下架任务，当前库存不够拣时，标记加急
////		hxStorageOffShelfService.safetyStockGenOffShelfTaskJob(64L);//低于安全库存值的需要生产下架任务，当前库存不够拣时，标记加急
//
//		hxStorageOffShelfService.safetyStockGenOffShelfTaskJob(112L);//潍坊歌尔 低于安全库存值的需要生产下架任务，当前库存不够拣时，标记加急
//	}
//
//
//	/**
//	 * 早上九点开始每10分钟执行一次 拉取聚水潭出库订单【济南仓】
//	 */
//	@Scheduled(cron = "0 0/10 * * * ?")
//	public void job9() {
//		//拉取聚水潭出库订单
//		jstOutOrderScheduledService.getJSTOutOrder(1922549817034559490L, 132L);
//
//	}
//
//
//	/**
//	 * 早上九点开始每10分钟执行一次 拉取聚水潭入库订单（济南仓）
//	 */
//	@Scheduled(cron = "0 0/2 * * * ?")
//	public void job10() {
//		//拉取聚水潭入库订单
//		jstPutOrderScheduledService.getJSTPutOrder(1922549817034559490L, 132L);
//
//	}
//
//	/**
//	 * 早上九点开始每10分钟执行一次 拉取聚水潭入库订单（武汉仓）
//	 */
//	@Scheduled(cron = "0 0/2 * * * ?")
//	public void job11() {
//		//拉取聚水潭入库订单
//		jstPutOrderScheduledService.getJSTPutOrderWh(1970704316458569730L, 147L);
//
//	}
//
//
//	/**
//	 * 自动下发AGV任务
//	 */
//	@Scheduled(cron = "0 0/1 * * * ?")
//	public void job12() {
//		//演示存储仓库 103
//		hxStorageOutService.autoAgvTaskScan(103L);
//	}
//
//
//	/**
//	 *
//	 * 自动提交订单
//	 */
//	@Scheduled(cron = "0 3/5 * * * ?")
//	public void job13() {
//		 jstOutOrderScheduledService.autoCommitOrder(1922549817034559490L, 132L);
//	}
//
//
//    /**
//     * 获取DPS的拣货任务回调
//     * 2分钟一次
//     */
//    @Scheduled(cron = "0 0/6 * * * ?")
//    public void job14() {
//        List<DpsZcServer> dpsZcServerList = dpsZcServerService.lambdaQuery()
//                .eq(DpsZcServer::getOperateId, 117)
//                .eq(DpsZcServer::getWorkTyp,"摘果")
//                .list();
//        for (DpsZcServer obj : dpsZcServerList) {
//            try {
//                hxStorageOutService.btnDpsStorageCR(obj);
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//        }
//    }
//
//	/**
//	 * 低于安全库存值的需要生产下架任务
//	 * 135秒执行一次
//	 */
//	@Scheduled(cron = "45 0/11 * * * ?")
//	public void job15() {
//		hxStorageOffShelfService.safetyStockGenOffShelfTaskJob(123L);//临沂可好常温 低于安全库存值的需要生产下架任务，当前库存不够拣时，标记加急
//	}
//
//
//    /**
//     * 早上九点开始每10分钟执行一次 拉取聚水潭销售出库订单（武汉仓）
//     */
//	@Scheduled(cron = "11 0/3 * * * ?")
//	public void job16() {
//		//拉取聚水潭销售出库订单
//        jstOutOrderScheduledService.getJSTOutOrderWh(1970704316458569730L, 147L);
//	}
//
//    /**
//     *
//     * 04:20执行一次
//     */
//	@Scheduled(cron = "0 20 4 * * ?")
//	public void job3() {
//        HxStorageStockParam stockParamdelete = new HxStorageStockParam();
//        stockParamdelete.setWarehouseId(123L);
//        stockParamdelete.setStockState("集货");
//        hxStorageStockService.deleteBySpec(stockParamdelete);
//	}

}
